package com.test.thread;

import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadPoolExecutor;

/**
 * @Classname MyRejectedExecutionHandler
 * @Description 线程池-自定义拒绝策略
 * @Date 2025/3/6 17:17
 * @Created by rgs
 */
public class MyRejectedExecutionHandler implements RejectedExecutionHandler {

    /**
     * 触发了拒绝策略会执行此处代码
     * @param r
     * @param executor
     */
    @Override
    public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {

        // 是我的任务
        if (r instanceof MyTask){
            MyTask task = (MyTask) r;
            String name = task.getName();

            // 通知第三方，比如收集信息的服务等
            sendNotification(name);

            // 或者后续还可以提交这个任务执行
//            executor.submit(r);
        }

    }


    private void sendNotification(String taskName){
        // todo 调用第三方接口
        System.out.println("现成名称为："+taskName+"的线程，触发拒绝策略，请运维人员关注，重新执行");
    }
}
